package cn.bigfire.wedesk.util;

import java.net.NetworkInterface;
import java.util.Collections;
import java.util.List;

public class NetKit {

    /**
     * 网络是否可用
     *
     * @return boolean 网络是否可用
     */
    public static boolean isAvailable() {
        return !"未知".equals(getNetType());
    }

    /**
     * 是否为有线连接 以太网
     *
     * @return boolean 是否为有线连接 以太网
     */
    public static boolean isEthernet() {
        return "Ethernet".equals(getNetType());
    }

    /**
     * 是否为无线连接 wifi WIFI
     *
     * @return boolean 是否为无线连接 wifi WIFI
     */
    public static boolean isWifi() {
        return isWireless();
    }

    /**
     * 是否为无线连接 wifi WIFI
     *
     * @return boolean 是否为无线连接 wifi WIFI
     */
    public static boolean isWireless() {
        return "Wireless".equals(getNetType());
    }

    /**
     * 获取 网络类型
     *
     * @return String 网络类型
     */
    public static String getNetType() {
        try {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface networkInterface : interfaces) {
                if (networkInterface.isUp()
                        && !networkInterface.isLoopback()
                        && !networkInterface.isVirtual()
                        && !networkInterface.getDisplayName().contains("VM")) {

                    if (networkInterface.getName().startsWith("eth")) {
                        return "Ethernet";
                    } else if (networkInterface.getName().startsWith("wlan")) {
                        return "Wireless";
                    }
                }
            }
        } catch (Exception e) {
            // ignore
        }
        return "未知";
    }

}
